Supplement the existing WMNormalHints, don't overwrite them.
authorOwen Taylor <otaylor@redhat.com>
Wed, 10 Feb 1999 15:45:19 +0000 (15:45 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Wed, 10 Feb 1999 15:45:19 +0000 (15:45 +0000)
Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>

* gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
 Supplement the existing WMNormalHints, don't
 overwrite them.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c

index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index 05e7b6a695921afbec37ca1aa2987829f3723fd6..0e39bff3a5894b18a4a63715466cc1e9839331b2 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:43:50 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkwindow.c (gdk_window_set_icon, gdk_window_set_group):
+        Supplement the existing WMNormalHints, don't 
+        overwrite them.
+
 Wed Feb 10 08:35:36 1999  Tim Janik  <timj@gtk.org>
 
        * gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
index e941db46f4a2036d30d4296af79ad29cfca862db..076d763789b2d1b94f1723f0857eb294eb51f2b6 100644 (file)
@@ -2008,7 +2008,7 @@ gdk_window_set_icon (GdkWindow *window,
                     GdkPixmap *pixmap,
                     GdkBitmap *mask)
 {
-  XWMHints wm_hints;
+  XWMHints *wm_hints;
   GdkWindowPrivate *window_private;
   GdkWindowPrivate *private;
   
@@ -2016,31 +2016,34 @@ gdk_window_set_icon (GdkWindow *window,
   window_private = (GdkWindowPrivate*) window;
   if (window_private->destroyed)
     return;
-  
-  wm_hints.flags = 0;
-  
+
+  wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow);
+  if (!wm_hints)
+    wm_hints = XAllocWMHints ();
+
   if (icon_window != NULL)
     {
       private = (GdkWindowPrivate *)icon_window;
-      wm_hints.flags |= IconWindowHint;
-      wm_hints.icon_window = private->xwindow;
+      wm_hints->flags |= IconWindowHint;
+      wm_hints->icon_window = private->xwindow;
     }
   
   if (pixmap != NULL)
     {
       private = (GdkWindowPrivate *)pixmap;
-      wm_hints.flags |= IconPixmapHint;
-      wm_hints.icon_pixmap = private->xwindow;
+      wm_hints->flags |= IconPixmapHint;
+      wm_hints->icon_pixmap = private->xwindow;
     }
   
   if (mask != NULL)
     {
       private = (GdkWindowPrivate *)mask;
-      wm_hints.flags |= IconMaskHint;
-      wm_hints.icon_mask = private->xwindow;
+      wm_hints->flags |= IconMaskHint;
+      wm_hints->icon_mask = private->xwindow;
     }
-  
-  XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints);
+
+  XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints);
+  XFree (wm_hints);
 }
 
 void          
@@ -2075,7 +2078,7 @@ void
 gdk_window_set_group (GdkWindow *window, 
                      GdkWindow *leader)
 {
-  XWMHints wm_hints;
+  XWMHints *wm_hints;
   GdkWindowPrivate *window_private;
   GdkWindowPrivate *private;
   
@@ -2086,10 +2089,16 @@ gdk_window_set_group (GdkWindow *window,
     return;
   
   private = (GdkWindowPrivate *)leader;
-  wm_hints.flags = WindowGroupHint;
-  wm_hints.window_group = private->xwindow;
-  
-  XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints);
+
+  wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow);
+  if (!wm_hints)
+    wm_hints = XAllocWMHints ();
+
+  wm_hints->flags |= WindowGroupHint;
+  wm_hints->window_group = private->xwindow;
+
+  XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints);
+  XFree (wm_hints);
 }
 
 static void
index e941db46f4a2036d30d4296af79ad29cfca862db..076d763789b2d1b94f1723f0857eb294eb51f2b6 100644 (file)
@@ -2008,7 +2008,7 @@ gdk_window_set_icon (GdkWindow *window,
                     GdkPixmap *pixmap,
                     GdkBitmap *mask)
 {
-  XWMHints wm_hints;
+  XWMHints *wm_hints;
   GdkWindowPrivate *window_private;
   GdkWindowPrivate *private;
   
@@ -2016,31 +2016,34 @@ gdk_window_set_icon (GdkWindow *window,
   window_private = (GdkWindowPrivate*) window;
   if (window_private->destroyed)
     return;
-  
-  wm_hints.flags = 0;
-  
+
+  wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow);
+  if (!wm_hints)
+    wm_hints = XAllocWMHints ();
+
   if (icon_window != NULL)
     {
       private = (GdkWindowPrivate *)icon_window;
-      wm_hints.flags |= IconWindowHint;
-      wm_hints.icon_window = private->xwindow;
+      wm_hints->flags |= IconWindowHint;
+      wm_hints->icon_window = private->xwindow;
     }
   
   if (pixmap != NULL)
     {
       private = (GdkWindowPrivate *)pixmap;
-      wm_hints.flags |= IconPixmapHint;
-      wm_hints.icon_pixmap = private->xwindow;
+      wm_hints->flags |= IconPixmapHint;
+      wm_hints->icon_pixmap = private->xwindow;
     }
   
   if (mask != NULL)
     {
       private = (GdkWindowPrivate *)mask;
-      wm_hints.flags |= IconMaskHint;
-      wm_hints.icon_mask = private->xwindow;
+      wm_hints->flags |= IconMaskHint;
+      wm_hints->icon_mask = private->xwindow;
     }
-  
-  XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints);
+
+  XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints);
+  XFree (wm_hints);
 }
 
 void          
@@ -2075,7 +2078,7 @@ void
 gdk_window_set_group (GdkWindow *window, 
                      GdkWindow *leader)
 {
-  XWMHints wm_hints;
+  XWMHints *wm_hints;
   GdkWindowPrivate *window_private;
   GdkWindowPrivate *private;
   
@@ -2086,10 +2089,16 @@ gdk_window_set_group (GdkWindow *window,
     return;
   
   private = (GdkWindowPrivate *)leader;
-  wm_hints.flags = WindowGroupHint;
-  wm_hints.window_group = private->xwindow;
-  
-  XSetWMHints (window_private->xdisplay, window_private->xwindow, &wm_hints);
+
+  wm_hints = XGetWMHints (window_private->xdisplay, window_private->xwindow);
+  if (!wm_hints)
+    wm_hints = XAllocWMHints ();
+
+  wm_hints->flags |= WindowGroupHint;
+  wm_hints->window_group = private->xwindow;
+
+  XSetWMHints (window_private->xdisplay, window_private->xwindow, wm_hints);
+  XFree (wm_hints);
 }
 
 static void